/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.camachosanchez.controler.jdbc;

import com.camachosanchez.bean.*;
import com.camachosanchez.util.ConexionSQL;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Zully
 */
public class ControlReencaucheJdbcControler {
    
    public List<ControlReencauche> findEnvios() {
        List<ControlReencauche> lst = new ArrayList<ControlReencauche>();
        Connection cn = ConexionSQL.obtenerConexion();
        Statement st;
        try {
            st = cn.createStatement();
            ResultSet rs = st.executeQuery("SELECT c.id, c.num_guia_remision, d.nombre, c.telefono, c.direccion, c.fecha_envio"
                    + " FROM control_reencauche c"
                    + " LEFT JOIN distribuidores_neumaticos d ON d.id = c.id_distribuidor_neumaticos"
                    + " WHERE c.estado_transaccion=0;");
            while (rs.next()) {
                ControlReencauche control = new ControlReencauche();
                control.setId(rs.getInt(1));
                control.setNumGuiaRemision(rs.getString(2));
                DistribuidoresNeumaticos distribuidorN = new DistribuidoresNeumaticos();
                distribuidorN.setNombre(rs.getString(3));
                control.setIdDistribuidorNeumaticos(distribuidorN);
                control.setTelefono(rs.getString(4));
                control.setDireccion(rs.getString(5));
                control.setFechaEnvio(rs.getDate(6));
                control.setDetalleControlReencaucheList(this.findDetalle(control.getId()));
                lst.add(control);
            }
            rs.close();
            st.close();
            cn.close();
        } catch (SQLException ex) {
            Logger.getLogger(ControlReencaucheJdbcControler.class.getName()).log(Level.SEVERE, null, ex);
        }
        return lst;
    }
    
    public ControlReencauche find(int id) {
        ControlReencauche control = new ControlReencauche();
        Connection cn = ConexionSQL.obtenerConexion();
        Statement st;
        try {
            st = cn.createStatement();
            ResultSet rs = st.executeQuery("SELECT c.id, c.num_guia_remision, d.nombre, c.telefono, c.direccion, c.fecha_envio,"
                    + " c.fecha_recepcion, c.num_factura"
                    + " FROM control_reencauche c"
                    + " LEFT JOIN distribuidores_neumaticos d ON d.id = c.id_distribuidor_neumaticos"
                    + " WHERE c.id = " + id);
            if (rs.next()) {
                control.setId(rs.getInt(1));
                control.setNumGuiaRemision(rs.getString(2));
                DistribuidoresNeumaticos distribuidorN = new DistribuidoresNeumaticos();
                distribuidorN.setNombre(rs.getString(3));
                control.setIdDistribuidorNeumaticos(distribuidorN);
                control.setTelefono(rs.getString(4));
                control.setDireccion(rs.getString(5));
                control.setFechaEnvio(rs.getDate(6));
                control.setFechaRecepcion(rs.getDate(7));
                control.setNumFactura(rs.getString(8));
                control.setDetalleControlReencaucheList(this.findDetalle(control.getId()));
            }
            rs.close();
            st.close();
            cn.close();
        } catch (SQLException ex) {
            Logger.getLogger(ControlReencaucheJdbcControler.class.getName()).log(Level.SEVERE, null, ex);
        }
        return control;
    }
    
    public List<DetalleControlReencauche> findDetalle(int idControl) {
        List<DetalleControlReencauche> lst = new ArrayList<DetalleControlReencauche>();
        Connection cn = ConexionSQL.obtenerConexion();
        Statement st;
        try {
            st = cn.createStatement();
            ResultSet rs = st.executeQuery("SELECT d.id, n.codigo, n.id_categoria, b.nombre, d.observaciones_recepcion, t.nombre,"
                    + " d.fecha_recepcion, d.num_factura, d.estado, d.por_garantia"
                    + " FROM detalle_control_reencauche d"
                    + " INNER JOIN neumaticos n ON n.id = d.id_neumatico"
                    + " INNER JOIN tipos_banda_neumatico b ON b.id = d.id_nuevo_tipo_banda"
                    + " INNER JOIN tipo_piso t ON t.id = d.id_nuevo_tipo_piso"
                    + " WHERE d.id_control_reencauche = " + idControl);
            while (rs.next()) {
                DetalleControlReencauche detalle = new DetalleControlReencauche();
                detalle.setId(rs.getInt(1));
                Categorias c = new Categorias();
                c.setId(rs.getInt(3));
                Neumaticos n = new Neumaticos();
                n.setCodigo(rs.getString(2));
                n.setIdCategoria(c);
                detalle.setIdNeumatico(n);
                TiposBandaNeumatico banda = new TiposBandaNeumatico();
                banda.setNombre(rs.getString(4));
                detalle.setIdNuevoTipoBanda(banda);
                detalle.setObservacionesRecepcion(rs.getString(5));
                TipoPiso tipoPiso = new TipoPiso();
                tipoPiso.setNombre(rs.getString(6));
                detalle.setIdNuevoTipoPiso(tipoPiso);
                detalle.setFechaRecepcion(rs.getDate(7));
                detalle.setNumFactura(rs.getString(8));
                detalle.setEstado(rs.getBoolean(9));
                detalle.setPorGarantia(rs.getBoolean(10));
                lst.add(detalle);
            }
            rs.close();
            st.close();
            cn.close();
        } catch (SQLException ex) {
            Logger.getLogger(ControlReencaucheJdbcControler.class.getName()).log(Level.SEVERE, null, ex);
        }
        return lst;
    }
}
